﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Aga.GestionDeArchivos.Domain.Entities
{
    /// <summary>
    /// Basic interface for domain entities
    /// </summary>
    public interface IDomainEntity
    {
        /// <summary>
        /// Gets or sets the id.
        /// </summary>
        /// <value>The id.</value>
        Int32 Id { get; set; }

        /// <summary>
        /// Gets or sets the creation date.
        /// </summary>
        /// <value>The creation date.</value>
        DateTime CreationDate { get; set; }

        /// <summary>
        /// Gets or sets the modification date.
        /// </summary>
        /// <value>The modification date.</value>
        DateTime? ModificationDate { get; set; }

        /// <summary>
        /// Gets or sets the creation user.
        /// </summary>
        /// <value>The creation user.</value>
        string CreationUser { get; set; }

        /// <summary>
        /// Gets or sets the modification user.
        /// </summary>
        /// <value>The modification user.</value>
        string ModificationUser { get; set; }

    }

    // partial implementations of IDomainEntity interface
    public partial class User : IDomainEntity
    {
        public string FullName
        {
            get
            {
                return (FirstName + " " + LastName).Trim();
            }
        }
    }
    public partial class Role : IDomainEntity { }
    public partial class Cliente : IDomainEntity { }
    public partial class Deposito : IDomainEntity { }
    public partial class Estanteria : IDomainEntity { }
    public partial class Ubicacion : IDomainEntity { }
    public partial class CajaCliente : IDomainEntity { }
    public partial class Movimiento : IDomainEntity { }
    public partial class Remito : IDomainEntity { }
    public partial class Item : IDomainEntity { }
    public partial class Reimpresion : IDomainEntity { }

}
